Skip to content

Conversation

@gene1wood
Copy link

Around the beginning of 2025, the ubuntu-latest runner image which this project uses, was changed from Ubuntu 22.04 to 24.04.

As a result, the python version which is used by this repo's GitHub actions changed from 3.10.12 to 3.12.3.

With this change to Python 3.12, PEP 668 was introduced. This new Python behavior is causing errors in the CI and pip is exiting non-zero

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

    See /usr/share/doc/python3.13/README.venv for more information.

This commit changes the CI to use virtualenvs to address this externally-managed-environment problem.

This also fixes up or updates CI by

  • Changing the build image from Ubuntu 20.04 to 24.04
  • Updating the list of Python versions tested to just the current supported Python versions
  • Updating the versions of the checkout and setup-python actions
  • Anchoring the install image to Ubuntu 24.04 (instead of latest) to prevent this type of thing in the future
  • Updating container OSes for install
    • CentOS Stream 8 to CentOS Stream 9 as Stream 8 is end of lifed
    • Ubuntu focatl to noble

Around the beginning of 2025, the `ubuntu-latest` runner image which [this project uses][1], [was changed from Ubuntu 22.04 to 24.04][2].

As a result, the python version which is used by this repo's GitHub actions changed from [3.10.12][3] to [3.12.3][4].

With this change to Python 3.12, [PEP 668][5] was introduced. This new Python behavior is causing errors in the CI and `pip` is exiting non-zero

```
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

    See /usr/share/doc/python3.13/README.venv for more information.
```

This commit changes the CI to use virtualenvs to address this externally-managed-environment problem.

This also fixes up or updates CI by

* Changing the build image from Ubuntu 20.04 to 24.04
* Updating the list of Python versions tested to just the current supported Python versions
* Updating the versions of the `checkout` and `setup-python` actions
* Anchoring the install image to Ubuntu 24.04 (instead of `latest`) to prevent this type of thing in the future
* Updating container OSes for install
  * CentOS Stream 8 to CentOS Stream 9 as Stream 8 is end of lifed
  * Ubuntu focatl to noble

[1]: https://github.com/systemd/python-systemd/blob/903142423452c4dd18110b7f8a953dabb2031e49/.github/workflows/install.yml#L17
[2]: actions/runner-images#10636
[3]: https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Readme.md#installed-software
[4]: https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md#language-and-runtime
[5]: https://peps.python.org/pep-0668/
@hongquan
Copy link
Contributor

It will be solved in #148

@keszybz
Copy link
Member

keszybz commented Oct 3, 2025

Thank you for the PR. We merged #148, which also resolves the issue, so I'll close this one now.

@keszybz keszybz closed this Oct 3, 2025
@gene1wood gene1wood deleted the fix_CI branch October 3, 2025 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants